-- 拿到优惠券id
local voucherId = ARGV[1];
-- 拿到用户id
local userId = ARGV[2];
-- 拿到订单id
--local orderId = ARGV[3];
-- 拼接库存key（key前缀是固定的）
local stockKey = "seckill:stock:" .. voucherId;
-- 拼接订单集合key
local orderSetKey = "seckill:order:" .. voucherId;

-- 判断优惠券库存是否充足（tonumber是函数，把字符串变成数字）
if (tonumber(redis.call("get", stockKey)) <= 0) then
    -- 库存不足，返回1
    return 1;
end
-- 判断用户是否已下单（set集合里的命令，判断是否存在了）
if (redis.call("sismember", orderSetKey, userId) == 1) then
    --已下单，返回2
    return 2;
end
-- 满足下单条件，扣减库存
redis.call("incrby", stockKey, -1);
-- 将用户加入已下单集合
redis.call("sadd", orderSetKey, userId);



-- 如果抢购成功，将创建订单消息添加到消息队列（异步执行），把一些数据传入idea里
--redis.call("xadd", "stream.orders", "*", "userId", userId, "voucherId", voucherId,"id", orderId);
-- 成功下单，返回0
return 0;